//api
import { reqspecslist, reqspecscount } from "../../http/api"
//状态
let state = {
        list: [],
        total: 0,
        size: 2,
        page: 1
    }
    //导出状态
let getters = {
        list(state) {
            return state.list
        },
        total(state) {
            return state.total
        },
        size(state) {
            return state.size
        },
        page(state) {
            return state.page
        }
    }
    //修改状态
    //修改状态
let mutations = {
        changeList(state, list) {
            state.list = list
        },
        changetotal(state, total) {
            state.total = total
        },
        changeSize(state, size) {
            state.size = size
        },
        changepage(state, page) {
            state.page = page
        },
    }
    //逻辑 异步
let actions = {
    //list逻辑
    reqList({ dispatch }) {
        //请求列表
        dispatch("reqSpecsList")
            //请求总数
        dispatch("reqTotal")
    },
    reqSpecsList(
        //解构参数
        {
            commit,
            dispatch,
            state: {
                size,
                page
            }
        }, all = false) {
        //请求列表
        //商品规格请列表要分页的，商品列表请求规格，不要分页，要所有数据。所以多传递一个参数all. true：所有数据，false：分页数据
        let params = all ? {} : {
                page,
                size
            }
            //调用列表
        reqspecslist(
            params
        ).then(res => {
            // 如果取到了空数组，当前页码不是第1页，需要取上一页的数据
            let arr = res.data.list ? res.data.list : []
            if (arr.length == 0 && page != 1) {
                //通知mutations修改page 
                commit("changepage", page - 1)
                    //请求列表
                dispatch("reqSpecsList")
                return
            }
            //修改list
            commit("changeList", arr)
        })
    },
    //请求总数
    reqTotal({
        commit
    }) {
        reqspecscount().then(res => {
            if (res.data.code == 200) {
                //修改总数
                commit("changetotal", res.data.list[0].total)
            }
        })
    },
    //修改了页码
    changePage({
        commit,
        dispatch
    }, page) {
        // 修改page
        commit("changepage", page)
            // 请列表
        dispatch("reqSpecsList")
    }

}

export default {
    state,
    getters,
    mutations,
    actions,
    namespaced: true
}